<?php

namespace App\Kuafu\User\Support;

class NetEaseDunBase
{
    /** 产品密钥ID，产品标识 */
    const SECRETID = "642c338fe2ee821724e724e9da520d03";

    /** 产品私有密钥，服务端生成签名信息使用，请严格保管，避免泄露 */
    const SECRETKEY = "07b4a1b02b61fbd86339fa6c691d62a8";

    /** 业务ID，易盾根据产品业务特点分配 */
    const BUSINESSID = "7445e0daada74407922cf392aed0cf2b";

    /** 易盾短信服务发送接口地址 */
    const API_DOMAIN = "https://ye.dun.163yun.com";

    /** api version */
    const VERSION = "v1";

    /** php内部使用的字符串编码 */
    const INTERNAL_STRING_CHARSET = "auto";

    /**
     * 计算参数签名
     * $params 请求参数
     * $secretKey secretKey
     */
    protected function gen_signature($secretKey, $params)
    {
        ksort($params);
        $buff = "";
        foreach ($params as $key => $value) {
            if ($value !== null) {
                $buff .= $key;
                $buff .= $value;
            }
        }
        $buff .= $secretKey;
        return md5($buff);
    }

    /**
     * 将输入数据的编码统一转换成utf8
     * @params 输入的参数
     */
    protected function toUtf8($params)
    {
        $utf8s = array();
        foreach ($params as $key => $value) {
            $utf8s[$key] = is_string($value) ? mb_convert_encoding($value, "utf8",
                self::INTERNAL_STRING_CHARSET) : $value;
        }
        return $utf8s;
    }

//    /**
//     * 易盾本机验证在线检测请求接口简单封装
//     * $params 请求参数
//     */
//    function check($params)
//    {
//        $params["secretId"]   = self::SECRETID;
//        $params["businessId"] = self::BUSINESSID;
//        $params["version"]    = self::VERSION;
//        $params["timestamp"]  = sprintf("%d", round(microtime(true) * 1000));
//        // time in milliseconds
//        $params["nonce"] = substr(md5(time()), 0, 32);
//        // random int
//        $params              = $this->toUtf8($params);
//        $params["signature"] = $this->gen_signature(self::SECRETKEY, $params);
//        $options             = array(
//            'http' => array(
//                'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
//                'method'  => 'POST',
//                'timeout' => self::API_TIMEOUT,
//                // read timeout in seconds
//                'content' => http_build_query($params)
//            )
//        );
//        $context             = stream_context_create($options);
//        $result              = file_get_contents(self::API_URL, false, $context);
//        if ($result === false) {
//            return array("code" => 500, "msg" => "file_get_contents failed.");
//        } else {
//            return json_decode($result, true);
//        }
//    }

// 简单测试
//    function main()
//    {
//        $params = array(
//            // 运营商预取号获取到的token
//            "accessToken" => "xx",
//            // 易盾返回的token
//            "token"       => "xxx"
//        );
//        $ret    = self::check($params);
//        var_dump($ret);
//        if ($ret["code"] == 200) {
//            $data  = $ret["data"];
//            $phone = $data["phone"];
//            if (empty($phone)) {
//                var_dump($data["resultCode"]);
//                // 取号失败,建议进行二次验证,例如短信验证码
//            } else {
//                // 取号成功, 执行登录等流程
//            }
//        } else {
//            var_dump($ret);
//            // error handler
//            // 降级短信
//        }
//    }
}
